<?php
/**
 *
 *
 * @author hutushen222
 *
 */
class DictcnDict {



	/**
	 * DictcnDict的默认构造函数
	 */
	function DictcnDict() {

	}

	/**
	 * lookup为查询接口, 通过此接口传入一个单词, 即可获得该单词的词典解释.
	 *
	 * @param string $gigi -- 待查寻地单词
	 * @return $result -- 按一定格式组织的一个单词的数组
	 * 			如果单词无对应的释义则返回一个空数组 array().
	 */
	function lookup($word) {
		
		# 如果没有给定单词，返回null
		if (trim($word) == '') {
			return null;
		}
		# 将单词进行编码，使其满足URL的规范
		$word = rawurlencode($word);

		// iciba的查词接口
		$url = "http://api.dict.cn/ws.php?utf8=true&q=" . $word;
		// 获取iciba词典查询后返回的结果
		$content = file_get_contents($url);

		// 将iciba返回的结果构造为XML Element对象
		$xml = new SimpleXMLElement($content) or die('format is wrong');

		// 处理获取地XML Element对象
		// $key代表单词本身 -- 如果XML文件中没有key元素,则$key为空字符串,可以使用empty函数判断
		$key = $xml->key;
		# 如果没有对应的key值，返回空
		if ($key == '') {
			return null;
		}
		// $ps代表单词的发音 -- 如果XML文件中没有ps元素,则$ps为空字符串,可以使用empty函数判断
		$ps = $xml->pron;
		// $pron代表单词的音频文件的地址  -- 如果XML文件中没有pron元素,则$pron为空字符串,可以使用empty函数判断
		$pron = $xml->audio;
		// 如果单词只有一个释义,则$pos为一普通变量,否则$pos为一数字索引数组
		$pos = $xml->pos;
		// 如果单词只有一个释义,则$acceptation为一普通变量,否则$acceptation为一数字索引数组,与$pos一一对应
		$acceptation = $xml->def;
		
		// 处理单词自身
		$this->result['key'] = $key;
		// 处理单词的发音
		$this->result['ps'] = $ps;
		// 处理单词的音频文件地址
		$this->result['pron'] = $pron;
		// 处理单词的释义, 所有的都当作数组处理
		$this->result['pos'] = $acceptation;

		// 返回结果

		return $this->result;

	}

	// 定义翻译返回的结果
	private $result = array();
}

############################################################################
# link:
# http://api.dict.cn/ws.php?utf8=true&q=#{word}

//$dict = new DictcnDict();
//$result = $dict->lookup('love');
//echo '<pre>';
//echo var_dump($result);
############################################################################
?>